feat: bring Uhura into the repo as the sibling client language (RFD 0022)#5
feat: bring Uhura into the repo as the sibling client language (RFD 0022)#5softmarshmallow wants to merge 1 commit into
Conversation
…022) Import Uhura — a declarative UI language and deterministic headless experience runtime — as a nested Cargo workspace under uhura/, with Spock as its canonical backend provider. Uhura fills the client-language slot Spock's doctrine deliberately leaves vacant (RFD 0010, "generate types, never the client"): a separate language with its own grammar, checker, and runtime, wired to Spock through the port seam. - uhura/: nested Cargo workspace (own rust-toolchain 1.92.0 pin, Cargo.lock, per-crate clippy purity denylists), path-filtered CI workflow, wasm build. - docs/rfd/0022: records the integration direction — contract projection (Spock Contract -> Uhura port contracts), adapter obligations, and the determinism boundary. No integration code lands yet; this is repo setup. - rust-toolchain.toml: pin the root workspace to 1.92.0 to match uhura; Spock builds and tests green on it (was floating on stable). - examples/instagram-uhura/: the Uhura client slice for the Instagram domain, at repo root beside examples/instagram/ (the Spock backend slice). Kept as distinct folders until the languages are wired; merge into one instagram/ domain planned (RFD 0022 section 7). Canonical PRD stays examples/instagram/PRD.md (language-neutral). Full acceptance gate green in the new location: fmt, clippy -D warnings, 33 suites / 118 tests / 0 ignored, native<->wasm parity byte-identical under UHURA_REQUIRE_PARITY=1.
|
Important Review skippedToo many files! This PR contains 216 files, which is 66 over the limit of 150. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (36)
📒 Files selected for processing (216)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Superseded: Uhura will live in its own dedicated repository rather than as a nested workspace here. The workspace has been imported to https://github.com/gridaco/uhura (promoted to the repo root, with the Instagram corpus under The port seam stays provider-neutral; the Spock↔Uhura integration direction (contract projection + adapter) can be reopened as its own RFD when the runtime wire is actually built. Closing without merge — |
What
Brings Uhura — a declarative UI language and deterministic headless experience runtime — into this repo as a nested Cargo workspace under
uhura/, with Spock as its canonical backend provider.Uhura fills the client-language slot Spock's own doctrine deliberately leaves vacant (RFD 0010, "generate types, never the client"; RFD 0009's borrow-first wall). It's a separate language with its own grammar, checker, and runtime, wired to Spock through the port seam — not part of Spock's surface.
Why here
The fit is designed-in on both sides. Uhura's design doc already names Spock as its intended real provider (its architecture diagram reads
fixture driver ⇄ future Spock adapter; §9.6 is "The Spock-replaceability argument"). Both projects independently dogfooded the same Instagram product from opposite ends — Spock the backend (examples/instagram/, 19 tables / 43 fns), Uhura the client experience. Each is the other's missing half.This PR is repo setup only — no runtime wire yet. The integration itself (contract projection + adapter) is recorded as direction in RFD 0022, to land later.
Contents
uhura/— nested Cargo workspace: ownrust-toolchain.toml(exact 1.92.0 pin),Cargo.lock, per-crate clippy purity denylists, path-filtered CI workflow (.github/workflows/uhura.yml), wasm build.docs/rfd/0022-uhura-the-client-language.md— the integration direction: contract projection (SpockContract→ Uhura port contracts, with thetimestamp/floattype decisions left open), adapter obligations (owns wall-clock, transport,X-Spock-Actor), and the determinism boundary (Spock's wall-clock ids/timestamps vs Uhura's forbidden-inputs list).rust-toolchain.toml(root) — pins the Spock workspace to 1.92.0 to match uhura; Spock builds/tests green on it (was floating onstable). Bump both files together.examples/instagram-uhura/— the Uhura client slice, at repo root besideexamples/instagram/(the Spock backend slice). Kept as distinct folders until the languages are wired; merge into oneinstagram/domain is planned (RFD 0022 §7). Canonical PRD staysexamples/instagram/PRD.md(language-neutral).Notes
uhura/is a nested workspace — Spock's rootCargo.tomllists members explicitly, so cargo doesn't absorb it, and uhura keeps its own edition (2024), resolver (3), and toolchain. TwoCargo.locks /target/s by design.publish = false.examples/relaxes uhura's former "independently extractable" invariant (corpus now lives outsideuhura/).Test plan
Acceptance gate green in the new location:
cargo fmt --all --check— clean (both workspaces)cargo clippy --workspace --all-targets --locked -- -D warnings— cleanUHURA_REQUIRE_PARITY=1 cargo test --workspace --locked(fromuhura/) — 33 suites / 118 tests / 0 ignored, acceptance battery passes with native↔wasm parity byte-identical (parity enforced, not skipped)cargo test --workspace(Spock root) — green on the pinned 1.92.0uhura-cli check ../examples/instagram-uhuraandtrace ... --script=demoboth passCI won't build wasm parity by default —
UHURA_REQUIRE_PARITY=1in CI remains deferred (uhura's own debt).